Авторы: В.Г. Шапалин, Д.В. Николаенко

Источник: сборник научных трудов IV Международной научно-практической конференции, Том 1. 29-30 ноября 2022 г. – с. 236-240.



Рассмотрение существующих способов создания элементов системы распознавания лиц

Шапалин В.Г., Николаенко Д. В.

Процесс обнаружения и распознавания человеческих лиц в настоящее время имеет важное значение. Её актуальность растет также в связи с ростом потребности реализации данных процедур в различных сферах жизни и деятельности общества.

В задачу биометрических методов распознавания лиц входит автоматическое нахождение лица на изображении, а также, при необходимости, идентификация человека. Интерес к сфере обнаружения распознавания лиц также становится значителен благодаря разнообразию их практического применения в таких областях, как охранные системы, криминалистическая экспертиза, верификация, телеконференции, в фототехнике для автоматической фокусировки на лице человека и прочие.

Технология идентификации личности на основе изображения лица, в отличие от использования других биометрических методов, не требует физического контакта с устройством, а также с учетом стремительного развития цифровой техники является наиболее приемлемой для массового применения.


ОБЗОР АЛГОРИТМОВ РАСПОЗНАВАНИЯ ЛИЦ


  1. Метод гибкого сравнения на графах.

    Суть метода сводится к эластичному сопоставлению графов, описывающих изображения лиц. Лица представлены в виде графов со взвешенными вершинами и ребрами. На этапе распознавания один из графов –эталонный – остается неизменным, в то время как другой деформируется с целью наилучшей подгонки к первому. В подобных системах распознавания графы могут представлять собой как прямоугольную решетку, так и структуру, образованную характерными (антропометрическими) точками лица.

    В вершинах графа вычисляются значения признаков, чаще всего используют комплексные значения фильтров Габора или их упорядоченных наборов – Габоровских вейвлет (строи Габора), которые вычисляются в некоторой локальной области вершины графа локально путем свертки значений яркости пикселей с фильтрами Габора.

    Ребра графа взвешиваются расстояниями между смежными вершинами. Различие между двумя графами вычисляется при помощи некоторой ценовой функции деформации, учитывающей как различие между значениями признаков, вычисленными в вершинах, так и степень деформации ребер графа.

    Деформация графа происходит путем смещения каждой из его вершин на некоторое расстояние в определённых направлениях относительно ее исходного местоположения и выбора такой ее позиции, при которой разница между значениями признаков (откликов фильтров Габора) в вершине деформируемого графа и соответствующей ей вершине эталонного графа будет минимальной. Данная операция выполняется поочередно для всех вершин графа до тех пор, пока не будет достигнуто наименьшее суммарное различие между признаками деформируемого и эталонного графов. Значение ценовой функции деформации при таком положении деформируемого графа и будет являться мерой различия между входным изображением лица и эталонным графом. Данная «релаксационная» процедура деформации должна выполняться для всех эталонных лиц, заложенных в базу данных системы. Результат распознавания системы – эталон с наилучшим значением ценовой функции деформации.

    Эффективность распознавания при наличии различных эмоциональных выражений и изменении ракурса лица до 15 градусов составляет от 90 до 95 %.

    Достоинствами метода гибкого сравнения на графах являются:


  2. Распознавание лиц с помощью машинного обучения.

    Нейронная сеть представляет собой математическую абстракцию, содержащую нейроны, соединенные друг с другом синапсами. Структура нейронной сети была вдохновлена подобной структурой работы нашего мозга. Благодаря такой структуре, машина может самостоятельно подбирать подходящие признаки, анализировать их, и выдавать результат, а в некоторых случаях, даже запоминать информацию.

    Нейронные сети используются для решения сложных задач, к которым невозможно подобрать универсальный алгоритм. Смысл нейронной сети заключается в самостоятельном подборе подходящих признаков или параметров, которые выбирает сам компьютер в процессе обучения. Наиболее часто нейронные сети применяют в задачах:

Общий принцип работы нейрона сводится к передаче данных с выхода одних нейронов на вход других нейронов, умножая значение выхода на коэффициент, который называется весом связи. Все входные значения суммируются, нормализуются с помощью функции активации, и идут на выходной сигнал.

Функция активации — это способ нормализации входных данных. Если на входе у нас большое число, то пропустив его через функцию активации, мы получим выход в нужном вам диапазоне. самые часто встречающиеся функции активации – линейная, сигмоид (Логистическая) и гиперболический тангенс.

В настоящее время существует около десятка разновидности нейронных сетей (НС). Одним из самых широко используемых вариантов являться сеть, построенная на многослойном перцептроне, в котором нейроны каждого слоя связаны с выходами предыдущего слоя. Такая сеть может гибко подстраиваться под нужный алгоритм, меняя значения весов. Обычно, для корректировки весов используют метод обратного распространения ошибки[3][4].



Рисунок 1 – схематическое изображение многослойного перцептрона.

    1. Свётрочные нейронные сети.

      Тем не менее, для распознавания лиц и общего анализа изображений лучше всего подходит Convolutional Neural Network или сверточная нейронная сеть(далее – СНС). Успех обусловлен возможностью учета двумерной топологии изображения, в отличие от многослойного персептрона.

      Сверточные нейронные сети более устойчивы к изменениям масштаба, смещениям, поворотам, смене ракурса и прочим искажениям.

      В СНС имеется несколько видов слоёв: сверточные (convolutional) слои, субдискретизирующие (subsampling, подвыборка) слои и слои «обычной» нейронной сети – персептрона.

      Первые два типа слоев (convolutional, subsampling), чередуясь между собой, который далее подаётся на полносвязный слой, фактичесчки являющийся многослойным персептроном.

      Свёрточной сеть называется по названию операции свёртки, суть которой будет объяснена далее.

      Топология нейронной сети берется исходя из условий задачи, топологии похожих нейронных сетей и личного опыта, пример возможной архитектуры с тремя входными матрицами, представляющими цвета, представлен на рисунке 2.


      Рисунок 2 – топология сверточной нейронной сети.

      Входные данные представляют собой двумерную матрицу определённого размера. Сверточный слой представляет из себя набор карт (другое название – карты признаков, по своей сути являющиеся матрицами), у каждой карты есть синаптическое ядро (в разных источниках он называется по-разному: сканирующее ядро или фильтр). Количество карт определяется требованиями к задаче, если взять большое количество карт, то повысится качество распознавания, но увеличится вычислительная сложность. Исходя из других работ по данной теме и данных из похожих статей, в большинстве случаев рекомендуется брать соотношение один к двум.

      Ядро представляет из себя фильтр или окно, которое скользит по всей области предыдущей карты и находит определенные признаки объектов. Изначально значения каждой карты сверточного слоя равны 0. Значения весов ядер задаются случайным образом в области от -0.5 до 0.5. Ядро скользит по предыдущей карте и производит операцию свертки, которая часто используется для обработки изображений, формула для операции свёртки представлена ниже:

      (𝑓 ∗ 𝑔)[𝑚, 𝑛] = ∑𝑘,𝑙 𝑓[𝑚 − 𝑘, 𝑛 − 𝑙] ∗ 𝑔[𝑘, 𝑙], (1) где f – исходная матрица изображения;

      g – ядро свёртки

      Подвыборочный слой также, как и сверточный имеет карты, но их количество совпадает с предыдущим (сверточным) слоем. Цель слоя – уменьшение размерности карт предыдущего слоя. Уменьшение изображение используется для уменьшения деталей в изображении, в результате, нейронная сеть работает с более общими признаками.

      В процессе сканирования ядром подвыборочного слоя (фильтром) карты предыдущего слоя, сканирующее ядро не пересекается в отличие от сверточного слоя. Обычно, каждая карта имеет ядро размером 2x2, что позволяет уменьшить предыдущие карты сверточного слоя в 2 раза. Вся карта признаков разделяется на ячейки 2х2 элемента, из которых максимальное, минимальное, или среднее значения, в зависимости от решаемой задачи.

      Последний из типов слоев это слой обычного многослойного персептрона. Цель слоя – классификация, моделирует сложную нелинейную функцию, оптимизируя которую, улучшается качество распознавания.[5]


    2. Создание системы распознавания лиц.

      При грубом рассмотрении, создание системы распознавания лиц сводится к созданию трёх отдельных элементов системы, каждая со своей функцией – детектор, нормализатор и экстрактор. Система принимает на вход изображение, а на выходе возвращает некоторый набор вещественных чисел, который «кодирует» лицо. Этот набор часто ещё называют «вектором признаков» или «биометрическим шаблоном».


    3. Детектор.

      Детектор – система для обнаружения лиц. Разные алгоритмы обнаружения начали набирать популярность с 2000-х годов. В качестве готового алгоритма часто используется гистограмма направленных градиентов, или HOG.

      Для работы метода, используется черно-белое изображение. Каждый пиксель изображения мы сравниваем с окружающими его, и проводим вектор по направлению затемнения изображения.

      Сохранение градиента для каждого отдельного пикселя даёт нам способ, несущий слишком много подробностей, которые могут быть неправильно рассмотрены, поэтому необходимо разбить изображения на блоки 16х16. В каждом квадрате следует подсчитать, сколько градиентных стрелок показывает в каждом главном направлении. Затем рассматриваемый квадрат на изображении заменяют стрелкой с преобладающим направлением в этом квадрате.

      Чтобы обнаружить лица на обработанном HOG-изображении, всё, что требуется, это найти такой участок изображения, который наиболее похож на известную HOG-структуру, полученную из группы лиц, использованной для обучения.

      Тем не менее, нейронные сети вытеснили все классические алгоритмы распознавания лиц практически полностью. Они менее чувствительны к ракурсу съёмки (наклонам, поворотам) и куда более стабильны в предсказаниях, чем классические методы. Даже скорость работы сегодня перестала быть проблемой для нейросетей: с тем огромным объёмом доступных данных для обучения и развитием вычислительных ресурсов можно без проблем подобрать такой размер нейросети, который удовлетворит нашим запросам.


    4. Нормализатор.

      Теперь мы имеем выделенное лицо из нашего изображения. Но теперь появляется проблема: одни и те же лица с разных ракурсов для компьютера выглядят по-разному. Чтобы учесть это, попробуем преобразовывать каждое изображение так, чтобы глаза и губы всегда находились примерно на одном и том же месте изображения.

      Для этого используем алгоритм, называемый «оценка антропометрических точек». Основная идея заключается в выделении 68 специфических точек (меток), имеющихся на каждом лице. Затем происходит настройка алгоритма на поиск этих 68 специфических точек на каждом лице:



      Рисунок 3– антропометрические точки, располагающиеся на каждом лице.

      После того, как мы поняли, где находятся глаза и рот, необходимо изменить размер изображения для его отцентрования с помощью афинных преобразований.

      Способ довольно простой, однако он сильно зависит от качества детектирования ключевых точек.

      Альтернатиой является нейросеть. С её помощью мы можем предсказать итоговую матрицу преобразования напрямую, не отыскивая ключевые точки и не делая каких-либо предположений о расположении носа и глаз.


    5. Экстрактор.

      Теперь, когда мы имеем нормализованное лицо, необходимо построить вектор признаков — этим занимается экстрактор. На вход мы подаём изображение фиксированного разрешения — обычно 90–130 пикселей, такой размер позволяет соблюсти баланс между точностью работы алгоритма и его скоростью.

      Какие же характеристики лица необходимо учитывать? Характеристики, представляющиеся очевидными для нас(размеры уха, длина носа, цвет глаз и т.д.) не имеют смысла для компьютера, анализирующего отдельные пиксели на изображении. Наиболее адекватным подходом является дать возможность компьютеру самому определить характеристики, которые надо собрать. Сверточные нейронные сети позволяют лучше, чем это могут сделать люди, определить части лица, важные для его распознавания.

      Задача состоит в том, чтобы обучить глубокую свёрточную нейронную сеть и научить её получать собственные характеристики для каждого лица.

      Для примера, при распознании двух разных людей, мы можем научить нейросеть на выборке из трёх лиц.

      Обучение сводится к следующим шагам:

      1. Загрузка обучающего изображения лица известного человека

      2. Загрузка другое изображения лица того же человека

      3. Загрузка изображения лица какого-то другого человека

      Затем алгоритм рассматривает характеристики, которые он в данный момент создаёт для каждого из указанных трёх изображений. Он слегка корректирует нейронную сеть так, чтобы характеристики, созданные ею для изображений 1 и 2, оказались немного ближе друг к другу, а для изображений 2 и 3 — немного дальше.

      При повторных шаге миллионы раз для тысячи разных людей, нейросеть оказывается в состоянии надёжно создавать 128 характеристик для каждого человека. Любые десять различных изображений одного и того же человека дадут примерно одинаковые характеристики.

      Чем большее количество людей будет использовано в обучении, тем лучше и точнее будет работать алгоритм. На каждого человека достаточно пяти-десяти фотографий для достаточно точного его распознавания.

      При формировании обучающей выборки следует учесть, что экстрактор всегда будет лучше работать на данных, похожих на те, на которых он учился. Если в датасете будут только представители европеоидной расы, то распознавание лиц азиатской внешности, либо черных людей может работать некорректно, поэтому нужно постараться сделать обучающую выборку как можно более разнообразной.


    6. Нахождение изображения.

На последнем шаге все что нам остаётся сделать – это найти человека в базе данных известных нам лиц, который имеет характеристики, наиболее близкие к характеристикам нашего тестового изображения. Это можно сделать с помощью любого базового алгоритма классификации обучения машин, и заострять на этом внимания нет большого смысла.

Вывод: в результате проделанной работы были исследованы принципы работы как классических алгоритмов для распознавания лиц, так и методов машинного обучения, а также были рассмотрены виды нейронных сетей, а именно многослойные персептроны и сверточные нейронные сети.

  1. Исследование характеристик алгоритмов распознавания лиц[Электронный ресурс] – Режим доступа: https://icmmg.nsc.ru/sites/default/files/pubs/levchuk_yakimenko_vestnik_ngtu2018.pdf.

  2. О некоторых аспектрах технологии распознавания лиц[Электронный ресурс] – Режим доступа: https://humancapital.su/wp-content/uploads/2020/04/202004-5_p142-152.pdf.

  3. Многослойных персептрон[Электронный ресурс] – Режим доступа: https://wiki.loginom.ru/articles/multilayered-perceptron.html.

  4. Введение в нейросети на примере распознавания цифр[Электронный ресурс] – Режим доступа: https://proglib.io/p/neural-network-course

  5. Сверточная нейронная сеть[Электронный ресурс] – Режим доступа: https://habr.com/ru/post/348000.

  6. https://www.csc.kth.se/~vahidk/papers/KazemiCVPR14.pdf


Шапалин В.Г., Николаенко Д. В. Рассмотрение существующих способов создания системы распознавания лиц. В статье представлен краткий обзор современных методов распознавания лиц, включая отдельные алгоритмы для нахождения, нормализации и непосредсвенно, распознавания человека в нормализованном изображении. Также были рассмотрены способы распознавания с помощью машинного обучения, и виды нейронных сетей, наиболее подходящие под данную задачу.


Ключевые слова: распознавание лиц, матрица Габона, перспетрон, свёрточные нейронные сети, гистограмма направленных градиентов, антропометрические точки.